package com.epalmpay.service.activity;

import com.epalmpay.dto.activity.ActivityLotteryAwardInDTO;
import com.epalmpay.dto.activity.ActivityLotteryInDTO;
import com.epalmpay.dto.activity.ActivityLotteryListOutDTO;
import com.epalmpay.dto.activity.ActivityLotteryRecordInDTO;
import com.epalmpay.dto.system.BaseOutDTO;
import com.epalmpay.dto.system.PageDTO;
import com.epalmpay.entity.ActivityLottery;
import com.epalmpay.entity.ActivityLotteryAward;
import com.epalmpay.exception.ApplicationException;

public interface ILotteryService  {

	/**
	 * 抽奖活动列表
	 * @param lotteryInDTO
	 * @param pageDTO
	 * @return
	 * @throws ApplicationException
	 */
	ActivityLotteryListOutDTO lotteryList(ActivityLotteryInDTO lotteryInDTO,PageDTO pageDTO) throws ApplicationException;
	
	/**
	 * 保存抽奖活动
	 * @param lotteryInDTO
	 * @return
	 * @throws ApplicationException
	 */
	BaseOutDTO saveActivityLottery(ActivityLotteryInDTO activityLotteryInDTO) throws ApplicationException;
	
	/**
	 * 根据id查询活动详情
	 * @param id
	 * @return
	 * @throws ApplicationException
	 */
	ActivityLottery selectActivityLotteryId(Long id) throws ApplicationException;
	
	/**
	 * 更新活动信息
	 * @param activityLotteryInDTO
	 * @return
	 * @throws ApplicationException
	 */
	BaseOutDTO updateActivityLottery(ActivityLotteryInDTO activityLotteryInDTO) throws ApplicationException;
	
	
	
	/**
	 * 根据id查询奖品详情
	 * @param id
	 * @return
	 * @throws ApplicationException
	 */
	ActivityLotteryAward activityLotteryAwardId(Long id) throws ApplicationException;
	
	
	
	/**
	 * 奖品等级列表
	 * @param activityLotteryAwardInDTO
	 * @return
	 * @throws ApplicationException
	 */
	ActivityLotteryListOutDTO activityLotteryAwardList(ActivityLotteryAwardInDTO activityLotteryAwardInDTO) throws ApplicationException;
	
	
	/**
	 * 保存抽奖信息
	 * @param lotteryInDTO
	 * @return
	 * @throws ApplicationException
	 */
	BaseOutDTO saveActivityLotteryAward(ActivityLotteryAwardInDTO activityLotteryAwardInDTO) throws ApplicationException;
	
	
	
	/**
	 * 修改奖品信息
	 * @param activityLotteryAwardInDTO
	 * @return
	 * @throws ApplicationException
	 */
	BaseOutDTO updateActivityLotteryAward(ActivityLotteryAwardInDTO activityLotteryAwardInDTO) throws ApplicationException;
	
	
	
	
	/**
	 * 获奖者列表
	 * @param lotteryInDTO
	 * @param pageDTO
	 * @return
	 * @throws ApplicationException
	 */
	ActivityLotteryListOutDTO activityLotteryRecordList(ActivityLotteryRecordInDTO activityLotteryRecordInDTO,PageDTO pageDTO) throws ApplicationException;
	
	
	/**
	 * 确认抽奖领取
	 * @param id
	 * @return
	 * @throws ApplicationException
	 */
	BaseOutDTO updateVerifyAwards(Integer id) throws ApplicationException;
	
	
}
